/**
 * 获取数据类型
 * @param data
 * @returns {String}
 */
export function dataType(data) {
  const type = {
    "[object String]": "string",
    "[object Array]": "array",
    "[object Object]": "object",
    "[object Null]": "null",
    "[object Number]": "number",
    "[object Undefined]": "undefined",
    "[object Boolean]": "boolean",
    "[object Function]": "function"
  };
  const resType = Object.prototype.toString.call(data);
  return type[resType];
}

/**
 * 判断是否是字符串类型
 * @param data
 * @returns {Boolean}
 */
export function isString(data) {
  return dataType(data) === "string";
}

/**
 * 判断是否是数组类型
 * @param data
 * @returns {Boolean}
 */
export function isArray(data) {
  return dataType(data) === "array";
}

/**
 * 判断是否是对象类型
 * @param data
 * @returns {Boolean}
 */
export function isObject(data) {
  return dataType(data) === "object";
}

/**
 * 判断是否是null类型
 * @param data
 * @returns {Boolean}
 */
export function isNull(data) {
  return dataType(data) === "null";
}

/**
 * 判断是否是数字类型
 * @param data
 * @returns {Boolean}
 */
export function isNumber(data) {
  return dataType(data) === "number";
}

/**
 * 判断是否是Undefined类型
 * @param data
 * @returns {Boolean}
 */
export function isUndefined(data) {
  return dataType(data) === "undefined";
}

/**
 * 判断是否是布尔类型
 * @param data
 * @returns {Boolean}
 */
export function isBoolean(data) {
  return dataType(data) === "boolean";
}

/**
 * 判断是否是函数类型
 * @param data
 * @returns {Boolean}
 */
export function isFunction(data) {
  return dataType(data) === "function";
}

/**
 * 判断是否是空对象
 * @param data
 * @returns {Boolean}
 */
export function isEmptyObject(data) {
  let b = false;
  if (isObject(data) && JSON.stringify(data) === "{}") {
    b = true;
  }
  return b;
}

/**
 * 判断是否是 "" 或 undefined 或 null 或 {} 或 []
 * @param data
 * @returns {Boolean}
 */
export function isBlank(t) {
  return (
    t === "" ||
    t === undefined ||
    isNull(t) ||
    (isObject(t) && JSON.stringify(t) === "{}") ||
    (isArray(t) && t.length < 1)
  );
}
